package com.common.cipher;

import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.symmetric.AES;

import java.util.HashMap;

/**
 * @author ZhangHaiWen
 * @title: CipherUtil
 * @projectName minipasscheck
 * @description: 加密工具类
 * @date 2021/2/911:18
 */
public class CipherUtil {

    /**
 　　* @description: 加密方法
 　　* @param [content 加密对象, key 秘钥, cipherType 加密类型]
 　　* @return {@link String}
 　　* @throws
 　　* @author ZhangHaiWen
 　　* @version 2.0
 　　* @date 2021/2/9 13:53
 　　*/
    public static String encrypt(Object content, String key,CipherType cipherType){
        ICipher iCipher = CipherFactory.create(cipherType);
        return iCipher.encrypt(content,key);
    }

    /**
 　　* @description: 解密方法
 　　* @param [content 密文, key 秘钥,clazz 解密返回对象, cipherType 类型]
 　　* @return {@link String}
 　　* @throws
 　　* @author ZhangHaiWen
 　　* @version 2.0
 　　* @date 2021/2/9 13:53
 　　*/
    public static <T> T dncrypt(String content, String key,Class<T> clazz,CipherType cipherType){
        ICipher iCipher = CipherFactory.create(cipherType);
        return iCipher.decrypt(content,key,clazz);
    }

    /**
 　　* @description: 解密方法
 　　* @param [content 密文, key 秘钥, cipherType 类型]
 　　* @return {@link String}
 　　* @throws
 　　* @author ZhangHaiWen
 　　* @version 2.0
 　　* @date 2021/2/9 13:53
 　　*/
    public static String dncrypt(String content, String key,CipherType cipherType){
        ICipher iCipher = CipherFactory.create(cipherType);
        return iCipher.decrypt(content,key);
    }


    /*public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put("name","123");
        String encrypt = CipherUtil.encrypt(map,
                "BGsa8p5AKjhh4grqBA+blw==",
                CipherType.AES);
        HashMap dncrypt = CipherUtil.dncrypt(encrypt,
                "BGsa8p5AKjhh4grqBA+blw==",
                HashMap.class,
                CipherType.AES);
        System.out.println(dncrypt);
    }*/

}
